package edu.whu.MagicNote.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import edu.whu.MagicNote.dao.TemplateDao;
import edu.whu.MagicNote.domain.Template;
import edu.whu.MagicNote.domain.dto.TemplateDTO;
import edu.whu.MagicNote.domain.vo.TemplateVO;
import edu.whu.MagicNote.service.ITemplateService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

@Service
public class TemplateServiceImpl extends ServiceImpl<TemplateDao, Template> implements ITemplateService {
    @Autowired
    private TemplateDao templateDao;

    @Override
    public void star(TemplateDTO templateDTO) {
        templateDao.star(templateDTO);
    }

    @Override
    public void unstar(TemplateDTO templateDTO) {
        templateDao.unstar(templateDTO);
    }

    @Override
    public List<TemplateVO> getTemplateVOs(TemplateDTO templateDTO) {
        // 查询所有模板和该用户收藏的模板
        List<Template> templates = templateDao.getTemplates(templateDTO);
        Set<Long> starTemplates = templateDao.getAllStar(templateDTO.getUserId());

        // 创建VO对象
        List<TemplateVO> result = new ArrayList<>(templates.size());
        for (Template template : templates) {
            TemplateVO templateVO = new TemplateVO();
            BeanUtils.copyProperties(template, templateVO);
            if (starTemplates.contains(templateVO.getId())) {
                templateVO.setStar(true);
            }
            result.add(templateVO);
        }
        return result;
    }


}
